package com.exercises;


class Exercise153 {
    public static void main(String[] args) {
        System.out.println(findMin(new int[]{3, 1, 2}));
    }


    public static int findMin(int[] nums) {
//        int left = 0, right = nums.length - 1;
//        int min = Math.min(nums[left], nums[right]);
//        while (left <= right) {
//
//            if (nums[left] < nums[right]) {
//                return Math.min(min, nums[left]);
//            } else {
//                int cursor = (left + right) / 2;
//                min = Math.min(min, nums[cursor]);
//                if (nums[cursor] >= nums[left]) {
//                    left = cursor + 1;
//                } else {
//                    right = cursor - 1;
//                }
//            }
//        }
//        return min;

        int left = 0, right = nums.length - 1;
        while (left < right) {
            if (nums[left] <= nums[right]) {
                return nums[left];
            } else {
                int cursor = (left + right) / 2;
                if (nums[cursor] >= nums[left]) {
                    left = cursor + 1;
                } else {
                    right = cursor;
                }
            }
        }
        return nums[right];
    }
}
